home *** CD-ROM | disk | FTP | other *** search
/ Windows 95 API Bible / Windows 95 API Bible 3 Disc Set.iso / Win32 API Bible Book 1 of 3 / CHAPTE24 / EX3.C < prev    next >
C/C++ Source or Header  |  1995-07-04  |  2KB  |  47 lines

  1. #include <stdlib.h>
  2. #include <genstub.c>
  3.  
  4. LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  5. {
  6.    switch (uMsg)
  7.    {
  8.       case WM_COMMAND:  // Process menu options.
  9.               switch ( LOWORD( wParam ) )
  10.               {
  11.                     case IDM_TEST:   // Get Performance Counter data.
  12.                     {                // Display data in message box.
  13.                          TCHAR szBuffer[128];
  14.                          LARGE_INTEGER liPerfFreq = {0, 0};
  15.                          LARGE_INTEGER liPerfCount = {0, 0};
  16.                          if ( QueryPerformanceCounter( &liPerfCount ) )
  17.                          {
  18.                             TCHAR szCounter[28]; /* includes space for exponent */
  19.                             double dCounter = (double) liPerfCount.LowPart +
  20.                                   (double) liPerfCount.HighPart *
  21.                                   (double) 0xFFFFFFFFFFFFFFFF;
  22.                             QueryPerformanceFrequency( &liPerfFreq );
  23.                             wsprintf( szBuffer,
  24.                                       "Count: %s, Resolution: %lu",
  25.                                       gcvt( dCounter, 20, (char *)szCounter ),
  26.                                       liPerfFreq.LowPart );
  27.                          }
  28.                          else
  29.                             lstrcpy( szBuffer,
  30.                                      "No high-resolution performance counter." );
  31.                          MessageBox( hWnd, szBuffer,
  32.                                      "Performance Counter Report", MB_OK );
  33.                     }
  34.                     break;
  35.                     case IDM_EXIT:
  36.                          DestroyWindow( hWnd );
  37.                     break;
  38.               }
  39.               break;
  40.       case WM_DESTROY:
  41.               PostQuitMessage(0);
  42.               break;
  43.       default:
  44.               return( DefWindowProc( hWnd, uMsg, wParam, lParam ) );
  45.    }
  46.    return (NULL);
  47. }